package ar.edu.utn.frba.tacs.warnes.beans;

import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import ar.edu.utn.frba.tacs.warnes.BaseEntity;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;

/**
 * Clase para los metodos genericos de los BrowseBeans
 * 
 * @author dmiglino
 */
public abstract class BaseBrowseBean extends BaseBean {
	/**
	 * Para poder recuperar los objetos de la tabla usamos un DataModel 
	 */
	protected DataModel dataModel = new ListDataModel();

	/**
	 * Al DataModel le metemos nuestra lista de objetos
	 */
	public DataModel getDataModel() {
		if (this.dataModel == null) {
			this.dataModel = new ListDataModel();
		}
		cargarDataModel();
		return this.dataModel;
	}
	
	/**
	 * Seteo mis objetos en el DataModel 
	 */
	protected abstract void cargarDataModel();

	/**
	 * Metodo generico para todas las acciones al eliminar
	 */
	public void actionEliminar(ActionEvent e) {
		BaseEntity entity = (BaseEntity) this.dataModel.getRowData();
		doBeforeEliminar(entity);
//		entity.delete();
	}
	
	/**
	 * Elimina el objeto de la correspondiente lista en el ContenedorWarnes
	 * @param entity
	 */
	protected abstract void doBeforeEliminar(BaseEntity entity);
	
	/**
	 * Redirecciona a la pagina de editar
	 */
	public String actionEditar() {
		storeOnSession(ConstantesWarnes.ENTITY, this.dataModel.getRowData());
		return "editar";
	}
}
